<?php
/*
 * 
 * Clase que se encarga de la transferencia directa de
 * información a la base de datos.
 * 
 */
class Sqlhelper{
	
	private $result;
	/* Conexion a la base de datos */
	public function __construct(){
		//mysql_connect("hucor.net", "btohcr_peregrino", "12345") or die(mysql_error());
		mysql_connect("localhost", "root", "") or die(mysql_error());
		mysql_select_db("posada") or die(mysql_error()); 
	}
	
	/* Ejecución de un query */
	public function query($query){
		if (!$this->result=mysql_query($query)){
			throw new Exception('Error realizando el query '.$query);
		}
	}
	
	/* Inserción de un nuevo usuario en la base de datos */
	public function insertar($id, $first_name, $last_name, $email){
		$this->query("INSERT INTO User VALUES (".$id.", '".$first_name."','".$last_name."','".$email."')");
	}
	
	//Regresa el expediente solicitado
	function getExpediente($expId) {
		$query = "SELECT * FROM DatosGenerales WHERE Expediente = $expId";
		$this->query($query);
		return $this->result;
	}
	
	function getExpedientePorNombreYFN($n, $fn) {
		$query = "SELECT * FROM DatosGenerales WHERE NombreCompleto LIKE '$n' AND FechaNacimiento = '$fn'";
		$this->query($query);
		return $this->result;
	}

	//Regresa todos los expedientes disponibles
	 function getTodosExpediente() {
		$query = "SELECT * FROM DatosGenerales";
		$this->query($query);
		return $this->result;
	}
	
	// Regresa todas las entradas con expediente
	function getTodasEntradasConExpediente() {
		$query = "SELECT * FROM EntradaConExpediente e, Motivo m WHERE e.MotivoID = m.MotivoID";
		$this->query($query);
		return $this->result;
	}
	
	// Regresa todas las entradas sin expediente
	function getTodasEntradasSinExpediente() {
		$query = "SELECT * FROM EntradaSinExpediente e, Motivo m WHERE e.MotivoID = m.MotivoID";
		$this->query($query);
		return $this->result;
	}
	function buscarEntradaConExpedientePorFecha($fecha1, $fecha2) {
		$query = "SELECT *  FROM EntradaConExpediente ece, DatosGenerales dg, Especialidad e 
		WHERE  dg.Expediente = ece.Expediente AND e.EspecialidadID = dg.EspecialidadID AND FechaLlegada BETWEEN '".$fecha1."' AND '".$fecha2."'"; 
		$this->query($query);
		return $this->result;
	}

	function buscarEntradaSinExpedientePorFecha($fecha1, $fecha2) {
		$query = "SELECT * FROM EntradaSinExpediente WHERE FechaLlegada >= $fecha1 AND FechaSalida <=$fecha2";
		$this->query($query);
		return $this->result;
	}


	function buscarEnDatosGeneralesPorFechaYSexo($fecha1, $fecha2, $sexo) {
		$query = "SELECT * FROM DatosGenerales WHERE FechaEntrevista >= $fecha1 AND FechaEntrevista <=$fecha2 AND Sexo = $sexo";
		$this->query($query);
		return $this->result;
	}
	
	function buscarEnDatosGeneralesPorFechaYEdad($fecha1, $fecha2, $edad) {
		$query = "SELECT * FROM DatosGenerales WHERE FechaEntrevista >= $fecha1 AND FechaEntrevista <=$fecha2 AND Edad = $edad";
		$this->query($query);
		return $this->result;
	}

	function buscarEnDatosGeneralesPorFechaYEspecialidad($fecha1, $fecha2, $esp) {
		$query = "SELECT * FROM DatosGenerales dg, Especialidad e WHERE dg.FechaEntrevista >= $fecha1 
								AND dg.FechaEntrevista <=$fecha2 AND dg.EspecialidadID =  e.EspecialidadID AND e.Nombre = $esp";
		$this->query($query);
		return $this->result;
	}

	function buscarEnDatosGeneralesPorFechaYEstado($fecha1, $fecha2, $estado) {
		$query = "SELECT * FROM DatosGenerales WHERE FechaEntrevista >= $fecha1 AND FechaEntrevista <=$fecha2 AND Estado = $Estado";
		$this->query($query);
		return $this->result;
	}

	function buscarEnDatosGeneralesPorFechaYMotivo($fecha1, $fecha2, $motivo) {
		$query = "SELECT * FROM DatosGenerales dg, Motivo m WHERE FechaEntrevista >= $fecha1 AND FechaEntrevista <=$fecha2 
								AND dg.MotivoID = m.MotivoID AND m.Motivo=$motivo";
		$this->query($query);
		return $this->result;
	}

	function buscarEnEntradasConExpedientePorFechaYMotivo($fecha1, $fecha2, $motivo) {
		$query = "SELECT * FROM EntradaConExpediente dg, Motivo m WHERE FechaEntrevista >= $fecha1 AND FechaEntrevista <=$fecha2 
								AND dg.MotivoID = m.MotivoID AND m.Motivo=$motivo";
		$this->query($query);
		return $this->result;
	}
	function buscarEnEntradasSinExpedientePorFechaYMotivo($fecha1, $fecha2, $motivo) {
		$query = "SELECT * FROM EntradaSinExpediente dg, Motivo m WHERE FechaEntrevista >= $fecha1 AND FechaEntrevista <=$fecha2 
								AND dg.MotivoID = m.MotivoID AND m.Motivo=$motivo";
		$this->query($query);
		return $this->result;
	}



	/* Inserción de seguimiento en la base de datos */

	
	public function insertarSeguimiento($expediente, $fecha, $info){
		//INSERT INTO SeguimientoPaciente VALUES ('','3','2012-09-29','Prueba de un seguimiento.')
		$this->query(" INSERT INTO SeguimientoPaciente VALUES ('','".$expediente."', '".$fecha."', '".$info."') ");
	}
	/* Inserción de entrada con expediente en la base de datos */
	public function insertarEntradaConExpediente($expediente, $fechaLlegada, $edad, $ingreso, $subsecuente, $motivo, $especialidad, $fechaSalida){
		$this->query("INSERT INTO EntradaConExpediente (`Expediente`, `FechaLlegada`, `Edad`, `Ingreso`, `Subsecuente`, `MotivoID`, `EspecialidadID`, `FechaSalida`)
											VALUES ('".$expediente."','".$fechaLlegada."', '".$edad."',	'".$ingreso."', '".$subsecuente."', '".$motivo."', '".$especialidad."', '".$fechaSalida."')");
	}
	
	/* Inserción de datos generales en la base de datos */
	
	public function insertarDatosGenerales($expediente, $fechaEntrevista, $nombre,
	 $lugarNacimiento, $fechaNacimiento, $pais, $escolaridad, $domicilio, $ciudad, $telefono,
	  $sexo, $estado, $motivo, $especialidad, $diagnostico, $tratamiento, $antecedentes, $instituciones,
	   $probSocial, $foto){
	   	 	$this->query(" INSERT INTO DatosGenerales (`Expediente`, `FechaEntrevista`, `NombreCompleto`, `LugarNacimiento`, 
	   		`FechaNacimiento`, `Escolaridad`, `Domicilio`, `Ciudad`, `Telefono`, `Sexo`, `Estado`, `MotivoID`, 
	   		`EspecialidadID`, `DiagnosticoMedico`, `Tratamiento`, `Antecedentes`, `ApoyadoPor`, `RazonDeVisita`, `NombreFoto`)
	   		 VALUES ('".$expediente."', '".$fechaEntrevista."', '".$nombre."', 
	   		  	'".$lugarNacimiento."', '".$fechaNacimiento."', '".$escolaridad."', '".$domicilio."', '".$ciudad."', '".$telefono."',
	  			'".$sexo."', '".$estado."', '".$motivo."', '".$especialidad."', '".$diagnostico."', '".$tratamiento."', '".$antecedentes."', '".$instituciones."',
	   			'".$probSocial."', '".$foto."')");


	}
	
	/* Inserción de familiares en la base de datos */
	public function insertarFamiliares($expediente, $nombre, $edad, $fechaNac, $parentesco, $sexo, $ocupacion, $nopersonas){
		$this->	query("INSERT INTO Familiares (`Expediente`, `Nombre`, `Edad`, `FechaNacimiento`, `Sexo`, `Parentesco`, `Ocupacion`, `VivenConEl`, `Foto`)
					           		   VALUES ('$expediente', '$nombre','$edad', '$fechaNac', '$sexo', '$parentesco', '$ocupacion', '$nopersonas', '.jpg')"); 
	}
	
	/* Obtiene el número del último expediente */
	public function generarNuevoExpediente(){
		$this->query("SELECT MAX(Expediente) FROM DatosGenerales");
		return $this->result;
	}

	/* Inserción de entrada sin expediente */
	
	public function insertarEntradaSinExpediente($fechaLlegada, $nombre, $edad, $municipio, $estado, $ingreso, $subsecuente, $motivo, $fechaSalida){
		$this->query("INSERT INTO EntradaSinExpediente (`FechaLlegada`, `NombreCompleto`, 
			`Edad`, `Municipio`, `Estado`, `Ingreso`, `Subsecuente`, `MotivoID`, `FechaSalida`)
			VALUES ('$fechaLlegada', '$nombre', '$edad', '$municipio', '$estado', '$ingreso',
				'$subsecuente', '$motivo', '$fechaSalida') ");
	}



	
}
?>
